package com.zyf.kafka.admin;

import org.apache.kafka.clients.admin.Admin;
import org.apache.kafka.clients.admin.AdminClientConfig;
import org.apache.kafka.clients.admin.CreateTopicsResult;
import org.apache.kafka.clients.admin.NewTopic;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author Malegod_xiaofei
 * @create 2024-08-22-20:24
 */
public class AdminTopicTest {
    public static void main(String[] args) {
        Map<String, Object> configMap = new HashMap<>();
        configMap.put(AdminClientConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092");


        // 创建管理员对象
        Admin admin = Admin.create(configMap);

        // 构建主题时需要传递三个参数
        //      第一个参数表示主题的名称:字母，数字(可以开头)，点，下划线，中横线。不推荐点和下划线同时使用
        //      第二个参数表示主题分区的数量：int
        //      第三个参数表示主题分区副本的(因子)数量：short
        String topicName = "test1";
        int partitionCount = 3;
        short replicationCount = 1;
        NewTopic topic1 = new NewTopic(topicName, partitionCount, replicationCount);

        /*String topicName2 = "test2";
        int partitionCount2 = 2;
        short replicationCount2 = 2;
        NewTopic topic2 = new NewTopic(topicName2, partitionCount2, replicationCount2);*/

        String topicName3 = "test4";
        Map<Integer, List<Integer>> map = new HashMap<>();
        map.put(0, Arrays.asList(3, 1));
        map.put(1, Arrays.asList(2, 3));
        map.put(2, Arrays.asList(1, 2));
        NewTopic topic3 = new NewTopic(topicName3, map);

        // 创建主题
        CreateTopicsResult topics = admin.createTopics(Arrays.asList(topic3));

        // In -sync -Replicas : 同步副本列表（ISR）

        // 关闭管理者对象
        admin.close();
    }
}
